
/**
 * 
 * @param {
 *  
 *  异步现象：
 *  1. 定时器
 *  2. http请求
 *  3. 事件  
 * 
 *  特点：
 *  结果返回的不确定性  
 * 
 *  解决异步的四种方案：
 *  1. 回调函数模式    回调区域获取返回结果
 *  2. promise       .then的回调区域获取结果
 *  3. * 函数
 *  4. async await  终极解决方案  await后面获取结果
 * }
 * 
 */

/**
 * 回调函数模式
 * @param {*} fn 
 */

// function auto(fn) {
//   setTimeout(() => {
//     fn && fn('hello world')
//   }, 1000)
// }

// let data = auto()
// console.log(data, 'data')

// 函数执行的时候，会把实际参数传递给形式参数
// 卧底模式；
// auto((res) => {
//   console.log(res, 'res')
// }) // 回调函数： 一个函数，作为参数，传递给其他函数，执行


/**
* @description
*/

function auto() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('hello world')
    }, 1000)
  })
}

// auto().then(res => {
//   console.log(res, 'res')
// })

/**
 *    *函数
* @description
*/

/**
 * 
 * async 函数 await
* @description
*/

// pedding  resolve
// pedding  reject
async function myFn() {
  let data = await auto()
  return data;
}

myFn().then(res => {
  console.log(res, 'res')
})
